//
// @Author: Zhenwei Xiao
// @Description:
// @Version: 1.0.0
// @Date: 2021/4/1 下午4:18
// @Copyright: MIN-Group；国家重大科技基础设施——未来网络北大实验室；深圳市信息论与未来网络重点实验室
//

//
// @Description:  Transport 接口， 便于LogicFace声明成员。logicFace模块中的每一种transport都必须实现ITransport声明的方法
//
class ITransport {
    constructor() {
        //
        // @Description:  关闭
        //
        if (!this.Close){
            // 因为尚未实现该接口，暂且不抛错
            console.log("ITransport's must support close!")
        }
        //
        // @Description: 发送一个lpPacket
        // @param lpPacket *packet.LpPacket
        // @return error
        //
        if (!this.Send) {
            console.log("ITransport's must support send!")
        }
        //
        // @Description: 从网络中接收到一段数据
        // @return *packet.LpPacket, error
        //
        if(!this.Receive) {
            console.log("ITransport's must support receive!")
        }
        //
        // @Description: 获得Transport的对端地址
        //			格式 ：
        //			TCP  tcp://192.238.3.3:7890
        //			UDP  udp://192.238.3.3:7890
        //			ether  ether://fc:aa:14:cf:a6:97
        //			unix  unix:///tmp/mirsock
        // @return string	对端地址
        //
        if(!this.GetRemoteUri) {
            console.log("ITransport's must support GetRemoteUri!")
        }
        //
        // @Description: 获得Transport的本机地址
        //			格式 ：
        //			TCP  tcp://192.238.3.3:7890
        //			UDP  udp://192.238.3.3:7890
        //			ether  ether://fc:aa:14:cf:a6:97
        //			unix  unix:///tmp/mirsock
        // @return string	本机地址
        //
        if(!this.GetLocalUri) {
            console.log("ITransport's must support GetLocalUri!")
        }
        // @Description: 获得Transport的对端地址
        //			格式 ：
        //			TCP  192.238.3.3:7890
        //			UDP  192.238.3.3:7890
        //			ether  fc:aa:14:cf:a6:97
        //			unix  /tmp/mirsock
        // @return string	对端地址
        //
        if(!this.GetRemoteAddr) {
            console.log("ITransport's must support GetRemoteAddr!")
        }
        //
        // @Description: 获得Transport的本机地址
        //			格式 ：
        //			TCP  192.238.3.3:7890
        //			UDP  192.238.3.3:7890
        //			ether  fc:aa:14:cf:a6:97
        //			unix  /tmp/mirsock
        // @return string	本机地址
        //
        if(!this.GetLocalAddr) {
            console.log("ITransport's must support GetLocalAddr!")
        }

        //
        // @Description: 设置读操作的超时时间
        // @param duration int64 超时时间 ， 以 毫秒 为单位, 小于等于0,表示永不超时
        // @return error	设置失败信息
        //
        if(!this.SetReadTimeout) {
            console.log("ITransport's must support SetReadTimeout!")
        }
    }
}

module.exports = {
    ITransport: ITransport
}


